package com.glut.library.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glut.library.entity.Book;
import com.glut.library.service.IUsersService;
import com.glut.library.entity.Users;
import com.glut.library.mapper.UsersMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 *  服务实现类
 *
 * @author stubborn
 * @since 2024-12-13 16:28
 */
@Service
public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users> implements IUsersService {
    @Autowired
    private UsersMapper usersMapper;

    @Override
    public Users login(String username, String password, String role) {
        // 查询用户
        Users user = usersMapper.selectByUsername(username);
        // 验证用户是否存在以及密码是否匹配
        if (user != null && user.getPassword().equals(password) && user.getRole().equals(role)) {
            return user; // 返回用户对象
        }
        return null; // 登录失败
    }

    @Override
    @Transactional
    public boolean registerUser (Users user) {
        // 检查用户名是否已存在
        Users existingUser  = usersMapper.selectByUsername(user.getUsername());
        if (existingUser  != null) {
            return false; // 用户名已存在
        }

        // 设置创建时间和默认角色
        user.setCreatedAt(new Date());
        user.setRole("USER"); // 设置用户角色为普通用户

        // 插入用户到数据库
        return usersMapper.insert(user) > 0;
    }

    //不完全匹配搜素
    @Override
    public List<Users> searchUsers(String query) {
        QueryWrapper<Users> queryWrapper = new QueryWrapper<>();

        // 如果查询字符串不为空，则添加搜索条件
        if (query != null && !query.trim().isEmpty()) {
            queryWrapper.like("username", query)
                    .or().like("role", query)
                    .or().like("grade", query);
        }

        // 返回符合条件的书籍列表
        return usersMapper.selectList(queryWrapper);
    }

    /*
    //完全匹配搜素
    @Override
    public List<Users> searchUsers(String query) {
        QueryWrapper<Users> queryWrapper = new QueryWrapper<>();

        // 如果查询字符串不为空，则添加搜索条件
        if (query != null && !query.trim().isEmpty()) {
            queryWrapper.eq("username", query)
                    .or().eq("role", query)
                    .or().eq("grade", query);
        }

        // 返回符合条件的用户列表
        return usersMapper.selectList(queryWrapper);
    }*/

    @Override
    public Users findByUsername(String username) {
        return lambdaQuery().eq(Users::getUsername, username).one();
    }
}
